package com.gr.staffpm.security.service;

import java.util.List;

import com.gr.staffpm.datatypes.Group;
import com.gr.staffpm.datatypes.Role;
import com.gr.staffpm.datatypes.User;

/**
 * A service interface for accessing and modifying user data in the system.
 */
public interface UserService {

    User getCurrentUser();

    void createUser(String username, String email, String password);

    List<User> getAllUsers();

    User getUser(int userId);

    void deleteUser(int userId);

    User findUser(String username);

    List<User> getAllUsers(int first, int count, String property, boolean ascending);

    List<User> getUsersInGroupByGroupName(String groupName);

    void addOrUpdateUser(User user);

    Role getUserRole();

    void addRole(User user, String user2);

    List<Role> getAllRoles();

    void addRoles(User newUser, List<Role> defaultModelObject);

    List<Group> getAllGroups();

}
